#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/input.h>
#include <sys/mman.h>

int * ui_lock( int *cache)//锁
{
    int lock = open("./bmp/lock.bmp",O_RDWR);
    lseek(lock,54,SEEK_SET); 
    char buf[800*480*3];
    read(lock,buf,800*480*3);//
    printf("open");
    int x,y,n=0;
    for(y=0;y<480;y++)
    {
        for(x=0;x<800;x++)
        {
            *(cache+(800*(479-y)+x)) = buf[3*n] + (buf[3*n+1]<<8)+ (buf[3*n+2]<<16);
            n++;
        }
    }
    printf("open1");
    close(lock);
    return cache ;    
}//
int * ui_index( int *cache)
{
    int index = open("./bmp/index.bmp",O_RDWR);
    lseek(index,54,SEEK_SET); 
    char buf[800*480*3];
    read(index,buf,800*480*3);//

    int x,y,n=0;
    for(y=0;y<480;y++)
    {
        for(x=0;x<800;x++)
        {
            *(cache+(800*(479-y)+x)) = buf[3*n] + (buf[3*n+1]<<8)+ (buf[3*n+2]<<16);
            n++;
        }
    }
    close(index);    
    return cache;
}//主界面

void ui_photo()
{
    printf("what can i say");
}///////相册 无需ui

int * ui_music( int *cache,int mod,int music_num,int songlist)//mod:0 显示暂停按钮(正在播放),1 显示播放按钮(暂停中) songlist:0不显歌单
{
    int music,selectphoto;
    if(mod)//模式
        music = open("./bmp/music_stop.bmp",O_RDWR);
    else
        music = open("./bmp/music_start.bmp",O_RDWR);
    lseek(music,54,SEEK_SET); 
    char buf[800*100*3];//按钮
    read(music,buf,800*100*3);//


    switch (music_num)//选封面
    {
    case 0:
        selectphoto = open("./bmp/jay1.bmp",O_RDWR);//晴天
        break;
    case 1:
        selectphoto = open("./bmp/faded.bmp",O_RDWR);//faded
        break;
    case 2:
        selectphoto = open("./bmp/jay2.bmp",O_RDWR);//搁浅
        break;
    }
    lseek(selectphoto,54,SEEK_SET);
    char buf1[800*380*3];//封面
    read(selectphoto,buf1,800*380*3);

    int list = open("./bmp/songlist.bmp",O_RDWR);//歌单
    //int list1 = open("./bmp/songlistarrow.bmp",O_RDWR);//歌单箭头
    lseek(list,54,SEEK_SET);
    //lseek(list1,54,SEEK_SET);
    char buf2[248*200*3];//歌单
    //char buf3[48*48*3];//歌单箭头
    read(list,buf2,248*200*3);
    //read(list1,buf3,48*48*3);

    int x,y,n=0;
    for(y=0;y<100;y++)//按钮  800x100
    {
        for(x=0;x<800;x++)
        {
            *(cache+(800*(479-y)+x)) = buf[3*n] + (buf[3*n+1]<<8)+ (buf[3*n+2]<<16);
            n++;
        }
    }
    n=0;
    for(y=100;y<480;y++)//音乐封面
    {
        for(x=0;x<800;x++)
        {
            *(cache+(800*(479-y)+x)) = buf1[3*n] + (buf1[3*n+1]<<8)+ (buf1[3*n+2]<<16);
            n++;
        }        
    }
    n=0;
    //int jiantou_y=0;
    if(songlist == 1)
    {
        for(y=100;y<300;y++)//歌单
        {
            for(x=450;x<248+450;x++)
            {
                *(cache+(800*(479-y)+x)) = buf2[3*n] + (buf2[3*n+1]<<8)+ (buf2[3*n+2]<<16);
                n++;
            }        
        }
    }

    close(music);
    close(selectphoto);
    close(list);
    //close(list1);
    return cache;
}

int * ui_video(int *cache,int mod)//视频按钮 mod： 0 显示暂停按钮（正在播放） ， 1 显示播放按钮（暂停中）
{
    int video;
    if(mod)//模式
        video = open("./bmp/video_stop.bmp",O_RDWR);
    else
        video = open("./bmp/video_start.bmp",O_RDWR);
    lseek(video,54,SEEK_SET); 
    char buf[800*100*3];//按钮
    read(video,buf,800*100*3);//

///////////
///fengmian code
//////////
    int x,y,n=0;
    for(y=0;y<100;y++)//按钮  800x100
    {
        for(x=0;x<800;x++)
        {
            *(cache+(800*(479-y)+x)) = buf[3*n] + (buf[3*n+1]<<8)+ (buf[3*n+2]<<16);
            n++;
        }
    }
    
    n=0;
    for(y=100;y<480;y++)//视频封面
    {
        for(x=0;x<800;x++)
        {
            *(cache+(800*(479-y)+x)) = 0xffffffff;
            n++;
        }        
    }
    close(video);
    return cache;
}

// int main()
// {
//     int bmp_x,bmp_y;//lcd坐标变量
//     int cache[800*480];//显示缓存
//     int *tmp;
//     int lcd = open("/dev/fb0",O_RDWR);   
//     if(lcd == -1)
//     {
//         printf("打开失败\n");
//         return -1;
//     }
//     int testtime = 0,testmod = 0;
//     int *argb = mmap(NULL,800*480*4,PROT_READ|PROT_WRITE,MAP_SHARED,lcd,0);
//     int bmp_n=0;
//     // while(1)
//     // {
//     //     switch (testmod)
//     //     {
//     //     case 0:tmp = ui_lock(cache);printf("0");
//     //         break;
//     //     case 1:tmp = ui_index(cache);printf("1");
//     //         break;    
//     //     case 2:ui_photo(cache);printf("2");
//     //         break; 
//     //     case 3:tmp = ui_music(cache,0,0);printf("3");
//     //         break;
//     //     case 4:tmp = ui_video(cache,0);printf("4");
//     //         break;   
//     //     default:
//     //         break;
//     //     }
//     //     for(bmp_n=0;bmp_n<800*480;bmp_n++)
//     //     {
//     //         *(argb+bmp_n) = tmp[bmp_n];
//     //     }        
//     //     sleep(5);
//     //     testtime++;testmod++;testmod%=5;
//     //     if(testtime == 5)
//     //         break;
//     // }
//     tmp = ui_music(cache,0,0);
//     for(bmp_n=0;bmp_n<800*480;bmp_n++)
//     {
//         *(argb+bmp_n) = tmp[bmp_n];
//     }
//     printf("结束");
//     munmap(argb,480*800*4);
//     close(lcd);
//     return 0;
// }
